package es.efor.ics.gev.service;

import java.util.List;

import es.efor.ics.gev.dao.DepartamentoDao;
import es.efor.ics.gev.model.Departamento;

/**
 * Business Service Interface to handle communication between web and
 * persistence layer.
 * 
 * @author dlisbona
 * 
 */
public interface DepartamentoManager extends GenericManager<Departamento, Long> {

	/**
	 * Convenience method for testing - allows you to mock the DAO and set it on
	 * an interface.
	 * 
	 * @param departamentoDao
	 *            the DepartamentoDao implementation to use
	 */
	void setDepartamentoDao(DepartamentoDao departamentoDao);

	/**
	 * Devuelve una lista de todos los departamentos ordenados por nombre.
	 * 
	 * @return List lista con todos los departamentos
	 */
	List<Departamento> getDepartamentos();

	/**
	 * Recupera un departamento por nombre.
	 * 
	 * @param nombre
	 *            del departamento
	 * @return Departamento
	 */
	Departamento getDepartamento(String nombre);

	/**
	 * Salva los datos de un departamento.
	 * 
	 * @param departamento
	 * @return el objeto departamento actualizado
	 */
	Departamento saveDepartamento(Departamento departamento);

	/**
	 * Borra un departamento a partir de su id
	 * 
	 * @param departamentoId
	 *            id del departamento a eliminar
	 */
	void removeDepartamento(String departamentoId);	

}
